[Home] Python으로 돌아가기

[Note] 연산자 오버로딩 (Operator Overloading)

연산자 오버로딩은 기존의 연산자(+, -, *, == 등)에 새로운 기능을 부여하여, 사용자가 정의한 클래스에 맞게 동작하게 만드는 기능이야. 파이썬에서는 클래스 내부에 특정한 메서드를 정의함으로써 연산자 오버로딩을 구현할 수 있어.

가. 기본 개념

예를 들어 두 벡터 객체를 더하고 싶다고 해보자. 그냥 + 연산자를 쓰면 오류가 나지만, 연산자 오버로딩을 하면 v1 + v2처럼 직관적인 문법을 사용할 수 있어.

나. 예제


class Vector:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def __add__(self, other):
        return Vector(self.x + other.x, self.y + other.y)

    def __repr__(self):
        return f"Vector({self.x}, {self.y})"

v1 = Vector(1, 2)
v2 = Vector(3, 4)
print(v1 + v2)  # 결과: Vector(4, 6)

다. 오버로딩 가능한 대표적인 메서드

라. 주의사항

연산자 오버로딩은 코드의 가독성을 높이고, 사용자 정의 타입을 내장 타입처럼 사용할 수 있게 해줘. 하지만 지나치게 남용하면 오히려 혼란을 줄 수 있기 때문에 신중하게 사용하는 게 좋아.